package com.wc.alorithm.string.hash;

import java.io.*;
import java.util.Arrays;

/**
 * @Author congege
 * @Description 查找多个字符串是否相等
 * https://www.luogu.com.cn/problem/P3370
 * @Date Created in 2023/11/30-15:25
 */
public class Main {

    private static final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    private static final PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

    public static void main(String[] args) {
        int n = nextInt();
        int ans = 1;
        long[] hash = new long[n];
        String s;
        for (int i = 0; i < n; i++) {
            s = nextLine();
            hash[i] = getHash(s);
        }
        Arrays.sort(hash);
        for (int i = 0; i < n; i++) {
            if (i == 0) {
                ans++;
                continue;
            }
            if (hash[i] != hash[i - 1]) {
                ans++;
            }
        }
        out.println(ans);
        out.flush();
    }

    // 计算字符串的哈希值
    // 使用自然溢出法
    private static long getHash(String s) {
        char[] chs = s.toCharArray();
        long hash = 0;
        long base = 131;
        for (char ch : chs) {
            hash = hash * base + (long) ch;
        }
        return hash;
    }

    // 读入int
    private static int nextInt() {
        int num = 0;
        try {
            num = Integer.parseInt(reader.readLine().trim());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return num;
    }

    // 读入Long
    private static long nextLong() {
        long num = 0;
        try {
            num = Long.parseLong(reader.readLine().trim());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return num;
    }

    // 读入字符串
    private static String nextLine() {
        String s = null;
        try {
            s = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return s;
    }

}
